package com.training.web.service;

import com.training.api.repository.CourseContentRepository;
import com.training.api.repository.CourseStageRepository;
import com.training.bean.Course;
import com.training.bean.CourseContent;
import com.training.bean.CourseStage;
import com.training.web.repository.WebCourseRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Date;
import java.util.List;
import java.util.Optional;

@Service
public class WebCourseService {
    
    @Autowired
    private CourseStageRepository stageRepository;
    
    @Autowired
    private WebCourseRepository webCourseRepository;
    
    @Autowired
    private CourseContentRepository contentRepository;
    
    // CourseStage相关方法
    public List<CourseStage> getAllStage() {
        return stageRepository.findAll();
    }
    
    public Optional<CourseStage> findStage(int id) {
        return stageRepository.findById(id);
    }
    
    public CourseStage addStage(CourseStage stage) {
        // 设置创建和更新时间
        Date now = new Date();
        stage.setCreate_date(now);
        stage.setUpdata_date(now);
        
        // 保存并返回保存后的对象
        return stageRepository.save(stage);
    }
    
    public CourseStage updateStage(CourseStage stage) {
        // 更新更新时间
        stage.setUpdata_date(new Date());
        
        // 保存并返回保存后的对象
        return stageRepository.save(stage);
    }
    
    public void deleteStage(int id) {
        stageRepository.deleteById(id);
    }
    
    // Course相关方法
    public List<Course> getAllCourse(int csid) {
        return webCourseRepository.findCourseByCSId(csid);
    }
    
    public Optional<Course> findCourse(int id) {
        return webCourseRepository.findById(id);
    }
    
    public Course addCourse(Course course) {
        // 设置创建和更新时间
        Date now = new Date();
        course.setCreate_date(now);
        course.setUpdata_date(now);
        
        // 保存并返回保存后的对象
        return webCourseRepository.save(course);
    }
    
    public Course updateCourse(Course course) {
        // 更新更新时间
        course.setUpdata_date(new Date());
        
        // 保存并返回保存后的对象
        return webCourseRepository.save(course);
    }
    
    public void deleteCourse(int id) {
        webCourseRepository.deleteById(id);
    }
    
    // CourseContent相关方法
    public List<CourseContent> getAllCourseContent(int cid) {
        return contentRepository.findCourseContentByCId(cid);
    }
    
    public Optional<CourseContent> findContent(int id) {
        return contentRepository.findById(id);
    }
    
    public CourseContent addContent(CourseContent content) {
        // 设置创建和更新时间
        Date now = new Date();
        content.setCreate_date(now);
        content.setUpdata_date(now);
        
        // 保存并返回保存后的对象
        return contentRepository.save(content);
    }
    
    public CourseContent updateContent(CourseContent content) {
        // 更新更新时间
        content.setUpdata_date(new Date());
        
        // 保存并返回保存后的对象
        return contentRepository.save(content);
    }
    
    public void deleteContent(int id) {
        contentRepository.deleteById(id);
    }
    
    /**
     * 根据课程阶段ID获取课程阶段标题
     * 
     * @param stageId 课程阶段ID
     * @return 课程阶段标题
     */
    public String getStageTitleById(int stageId) {
        Optional<CourseStage> stage = stageRepository.findById(stageId);
        return stage.isPresent() ? stage.get().getTitle() : "unknown";
    }
    
    /**
     * 根据课程ID获取课程标题
     * 
     * @param courseId 课程ID
     * @return 课程标题
     */
    public String getCourseTitleById(int courseId) {
        Optional<Course> course = webCourseRepository.findById(courseId);
        return course.isPresent() ? course.get().getTitle() : "unknown";
    }
}